#include "game/npccar.h"
#include <QPainter>
#include <QDebug>
#include <QTimer>
#include <QTime>

Item::Item()
{
    y = 0;
    initSite = 0;
    basedx = 260;
    basedy = 1800;
    speed = 1;

    this->setData( 1, 1);
    this->hide();
}

/**
 * @brief 设置NPC小车相初始位置
 *
 * @param x
 * @param y
 */
void Item::setBase(const qreal &x, const qreal &y)
{
    basedx = x;
    basedy = y;
}

/**
 * @brief 实时设置小车坐标
 *
 */
void Item::setMyPos()
{
    initSite = y;
    this->setPos( basedx, y - 122);
    this->show();
}

/**
 * @brief 获得场景的纵坐标，并判断是否移除视图（显示界面），
 *        如果移除显示界面，则从新设置NPC位置（可以放到advance动画里）
 *
 * @param dy 场景纵坐标
 */
void Item::GetDy(const qreal &dy)
{
    y = dy;
    if ( initSite > dy + basedy)
    {
        setMyPos();
        QTime t;
        t = QTime::currentTime();
        qsrand(t.msec()+t.second()*1000);
        qreal n = qrand() % 10 + 10;
        speed = n/10;
    }
    this->moveBy( 0, speed);
}

/**
 * @brief 绑定图形项范围
 *
 * @return QRectF 范围
 */
QRectF Item::boundingRect() const
{
    qreal adjust = 0.5;
    return QRectF(0 - adjust, 0 - adjust,
                  60 + adjust, 122 + adjust);
}

/**
 * @brief 重绘图形项和碰撞检测
 *
 * @param painter 绘制事件
 * @param
 * @param
 */
void Item::paint(QPainter *painter, const QStyleOptionGraphicsItem *,
                 QWidget *)
{
    // 为小车使用贴图
    painter->drawPixmap( 0, 0, 60, 122, Pix);
    QGraphicsItem *item;
    //设置边框为透明
    painter->setPen(QPen(QColor( 0,0,0,0)));
    //小车碰撞处理
    if(!collidingItems().isEmpty()) {
        foreach ( item, collidingItems()) {
            if(item->data(1) == 1)
            {
                painter->setPen(QPen(QColor(179,45,11,200)));
                this->hide();
            }
        }
    }
    painter->drawRect( 0, 0, 60, 122);
}

/**
 * @brief 加载NPC小车贴图
 *
 * @param pix 贴图
 */
void Item::setPix(const QPixmap &pix)
{
    Pix = pix;
}
